﻿namespace DotRas
{
    using System;

    [Serializable]
    public sealed class RasLinkStatistics
    {
        private int _alignmentError;
        private int _bufferOverrunError;
        private int _bytesReceived;
        private int _bytesTransmitted;
        private int _compressionRatioIn;
        private int _compressionRatioOut;
        private TimeSpan _connectionDuration;
        private int _crcError;
        private int _framesReceived;
        private int _framesTransmitted;
        private int _framingError;
        private int _hardwareOverrunError;
        private int _linkSpeed;
        private int _timeoutError;

        internal RasLinkStatistics(int bytesTransmitted, int bytesReceived, int framesTransmitted, int framesReceived, int crcError, int timeoutError, int alignmentError, int hardwareOverrunError, int framingError, int bufferOverrunError, int compressionRatioIn, int compressionRatioOut, int linkSpeed, TimeSpan connectionDuration)
        {
            this._bytesTransmitted = bytesTransmitted;
            this._bytesReceived = bytesReceived;
            this._framesTransmitted = framesTransmitted;
            this._framesReceived = framesReceived;
            this._crcError = crcError;
            this._timeoutError = timeoutError;
            this._alignmentError = alignmentError;
            this._hardwareOverrunError = hardwareOverrunError;
            this._framingError = framingError;
            this._bufferOverrunError = bufferOverrunError;
            this._compressionRatioIn = compressionRatioIn;
            this._compressionRatioOut = compressionRatioOut;
            this._linkSpeed = linkSpeed;
            this._connectionDuration = connectionDuration;
        }

        public int AlignmentError
        {
            get
            {
                return this._alignmentError;
            }
        }

        public int BufferOverrunError
        {
            get
            {
                return this._bufferOverrunError;
            }
        }

        public int BytesReceived
        {
            get
            {
                return this._bytesReceived;
            }
        }

        public int BytesTransmitted
        {
            get
            {
                return this._bytesTransmitted;
            }
        }

        public int CompressionRatioIn
        {
            get
            {
                return this._compressionRatioIn;
            }
        }

        public int CompressionRatioOut
        {
            get
            {
                return this._compressionRatioOut;
            }
        }

        public TimeSpan ConnectionDuration
        {
            get
            {
                return this._connectionDuration;
            }
        }

        public int CrcError
        {
            get
            {
                return this._crcError;
            }
        }

        public int FramesReceived
        {
            get
            {
                return this._framesReceived;
            }
        }

        public int FramesTransmitted
        {
            get
            {
                return this._framesTransmitted;
            }
        }

        public int FramingError
        {
            get
            {
                return this._framingError;
            }
        }

        public int HardwareOverrunError
        {
            get
            {
                return this._hardwareOverrunError;
            }
        }

        public int LinkSpeed
        {
            get
            {
                return this._linkSpeed;
            }
        }

        public int TimeoutError
        {
            get
            {
                return this._timeoutError;
            }
        }
    }
}

